package com.atguigu.gmall.item.vo;

import com.atguigu.gmall.pms.entity.CategoryEntity;
import com.atguigu.gmall.pms.entity.SkuImagesEntity;
import com.atguigu.gmall.pms.vo.ItemGroupVO;
import com.atguigu.gmall.pms.vo.ItemSaleAttrVO;
import com.atguigu.gmall.sms.vo.ItemSaleVO;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Data
@ApiModel("商品详情")
public class ItemVO {
    //sku数据
    @ApiModelProperty("sku id")
//    @JsonSerialize(using = ToStringSerializer.class)
    private Long skuId;
    @ApiModelProperty("sku标题")
    private String title;
    @ApiModelProperty("sku副标题")
    private String subTitle;
    @ApiModelProperty("sku价格")
    private BigDecimal price;
    @ApiModelProperty("sku重量")
    private Integer weight;
    @ApiModelProperty("sku默认图片")
    private String defaultImage;
    //sku相关数据
    // sku图片：pms_sku_image
    @ApiModelProperty("sku图片列表")
    private List<SkuImagesEntity> images;
    //- 营销数据：促销：  营销id  满减--> 满2000减200  sms库营销数据表
    @ApiModelProperty("sku的营销数据")
    private List<ItemSaleVO> sales;
    //- 库存数据： wms ware_sku
    @ApiModelProperty("sku是否有货")
    private Boolean store = false;
    //- sku的销售属性： sku_attr_value
    @ApiModelProperty("当前sku的销售属性id和值映射的集合")
    private Map<Long,String> skuAttrs;// 3 黑色   4 8G
    //- sku的品牌： pms_brand
    @ApiModelProperty("品牌id")
    private Long brandId;
    @ApiModelProperty("品牌名称")
    private String brandName;
    //- sku的123级分类：pms_category
    @ApiModelProperty("一二三级分类集合")
    private List<CategoryEntity> categories;
    //- sku的spu： pms_spu
    @ApiModelProperty("spu id")
    private Long spuId;
    @ApiModelProperty("spu标题")
    private String spuName;
    //- spu的图片列表： pms_spu_desc
    @ApiModelProperty("spu详情图片列表")
    private List<String> spuImages;
    //- spu的所有sku的销售属性+值集合 的列表： pms_sku_attr_value
    @ApiModelProperty("sku所属的spu的销售属性id和值集合映射列表")
    // {attrId:3 , attrName: 颜色 , attrValues: ['黑色','白色']}
    private List<ItemSaleAttrVO> saleAttrs;
    //- spu下所有sku 每个sku销售属性值字符串 和它的id映射的集合
    // {"黑色,8G,256G":1 , ""黑色,12G,256G":2}   pms_sku_attr_value
    @ApiModelProperty("所有sku的销售属性值组合字符串映射skuid的json")
    private String skuJsons;
    //   pms_attr_group   pms_attr    pms_sku_attr_value pms_spu_attr_value
    @ApiModelProperty("spu和sku的属性组和组内的所有属性+值")
    //{groupName:主体 , attrValues:[ {attrName:'机型',attrValue:'vivo9x',attrId:'6'},{} ]}
    private List<ItemGroupVO> groups;
}
